// var i;
// var AL_GAME_HUA_PlatformCommon = require("./AL_GAME_HUA_PlatformCommon");
// var c = cc._decorator;
// var l = c.ccclass;
// var u =
//     (c.property,
//     (function (e) {
//         function t() {
//             var t = (null !== e && e.apply(this, arguments)) || this;
//             t._button = null;
//             t._onTap = null;
//             return t;
//         }
//         __extends(t, e);
//         t.prototype.onLoad = function () {
//             if (this.node.getComponent(cc.Widget)) {
//                 this.node.getComponent(cc.Widget).updateAlignment();
//             }
//             this.node.on("position-changed", this.chongxin_shezhi_anniu_chicun, this);
//             this.node.on("size-changed", this.chongxin_shezhi_anniu_chicun, this);
//         };
//         t.prototype.start = function () {
//             var e = this;
//             if (this.node.active) {
//                 this.scheduleOnce(function () {
//                     e._button = e.chuangjian_anniu();
//                     if (e._button) {
//                         e._button.onTap(function (t) {
//                             if (e._onTap) {
//                                 e._onTap(t);
//                             }
//                         });
//                     }
//                     e.chongxin_shezhi_anniu_chicun();
//                 });
//             }
//         };
//         t.prototype.onEnable = function () {
//             this.show();
//         };
//         t.prototype.onDisable = function () {
//             this.hide();
//         };
//         t.prototype.onDestroy = function () {
//             var e;
//             var t;
//             this.node.off("position-changed", this.chongxin_shezhi_anniu_chicun, this);
//             this.node.off("size-changed", this.chongxin_shezhi_anniu_chicun, this);
//             if (this._button) {
//                 if (
//                     !(null === (t = null === (e = this._button) || void 0 === e ? void 0 : e.destroy) || void 0 === t)
//                 ) {
//                     t.call(e);
//                 }
//                 this._button = null;
//             }
//         };
//         t.prototype.chuangjian_anniu = function () {
//             return null;
//         };
//         t.prototype.show = function () {
//             var e;
//             var t;
//             if (this._button) {
//                 if (!(null === (t = null === (e = this._button) || void 0 === e ? void 0 : e.show) || void 0 === t)) {
//                     t.call(e);
//                 }
//             }
//         };
//         t.prototype.hide = function () {
//             var e;
//             var t;
//             if (this._button) {
//                 if (!(null === (t = null === (e = this._button) || void 0 === e ? void 0 : e.hide) || void 0 === t)) {
//                     t.call(e);
//                 }
//             }
//         };
//         t.prototype.chongxin_shezhi_anniu_chicun = function () {
//             if (this._button) {
//                 var e = this._button;
//                 var t = AL_GAME_HUA_PlatformCommon.PlatformCommon.huoqu_jiedian_dao_zhen_de_juxing(this.node);
//                 var n = t.left;
//                 var o = t.top;
//                 var i = t.width;
//                 var r = t.height;
//                 e.style.left = n;
//                 e.style.top = o;
//                 e.style.width = i;
//                 e.style.height = r;
//             }
//         };
//         t.prototype.tianjia_anniu_dianji_huidiao = function (e) {
//             this._onTap = e;
//         };
//         return __decorate([l], t);
//     })(cc.Component));
// exports.default = u;


const { ccclass, property } = cc._decorator;
const PlatformCommon = require("./AL_GAME_HUA_PlatformCommon").PlatformCommon;

/**
 * ButtonController类，继承自cc.Component，用于管理节点上的按钮创建、显示、隐藏等功能。
 */
@ccclass
class ButtonController extends cc.Component {
  _button = null;
  _onTap = null;

  /**
   * 当组件加载时调用，初始化组件的一些基本操作。
   */
  onLoad() {
    const widgetComponent = this.node.getComponent(cc.Widget);
    if (widgetComponent) {
      widgetComponent.updateAlignment();
    }
    this.node.on("position-changed", this.chongxin_shezhi_anniu_chicun, this);
    this.node.on("size-changed", this.chongxin_shezhi_anniu_chicun, this);
  }

  /**
   * 当组件启动时调用，负责按钮的创建与初始化。
   */
  start() {
    if (this.node.active) {
      this.scheduleOnce(() => {
        this._button = this.chuangjian_anniu();
        if (this._button) {
          this._button.onTap(event => {
            if (this._onTap) {
              this._onTap(event);
            }
          });
        }
        this.chongxin_shezhi_anniu_chicun();
      });
    }
  }

  /**
   * 当组件启用时调用，显示与按钮有关的内容。
   */
  onEnable() {
    this.show();
  }

  /**
   * 当组件禁用时调用，隐藏与按钮有关的内容。
   */
  onDisable() {
    this.hide();
  }

  /**
   * 销毁组件时调用，处理事件监听器移除与按钮实例销毁。
   */
  onDestroy() {
    this.node.off("position-changed", this.chongxin_shezhi_anniu_chicun, this);
    this.node.off("size-changed", this.chongxin_shezhi_anniu_chicun, this);
    if (this._button) {
      this._button.destroy?.();
      this._button = null;
    }
  }

  /**
   * 创建按钮的方法，默认返回null。
   */
  chuangjian_anniu() {
    return null;
  }

  /**
   * 将按钮的样式属性更新为节点对应的样式属性。
   */
  chongxin_shezhi_anniu_chicun() {
    if (this._button) {
      const button = this._button;
      const rect = PlatformCommon.huoqu_jiedian_dao_zhen_de_juxing(this.node);
      button.style.left = rect.left;
      button.style.top = rect.top;
      button.style.width = rect.width;
      button.style.height = rect.height;
    }
  }

  /**
   * 负责显示按钮。
   */
  show() {
    this._button?.show?.();
  }

  /**
   * 负责隐藏按钮。
   */
  hide() {
    this._button?.hide?.();
  }

  /**
   * 为按钮添加点击回调。
   * @param {Function} callback 点击按钮的回调函数。
   */
  tianjia_anniu_dianji_huidiao(callback) {
    this._onTap = callback;
  }
}

exports.default = ButtonController;